package com.wanlian.service;

import com.wanlian.common.PageCondition;
import com.wanlian.entity.HistoryLogin;
import com.wanlian.entity.Invite;
import com.wanlian.entity.User;
import com.wanlian.entity.UserPhoneCode;
import com.wanlian.model.ResultModel;
import com.wanlian.vo.Page;
import com.wanlian.vo.PasswordVo;

import java.util.List;
import java.util.Map;

public interface UserServices {
    /**
     * 添加
     *
     * @param user
     * @return
     */
    ResultModel doAdd(User user);

    /**
     * 编辑用户
     *
     * @param user
     * @return
     */
    ResultModel doAppEdit(User user);

    ResultModel doedit(User user);

    /**
     * 删除用户
     *
     * @param user
     * @return
     */
    ResultModel doDeleteUser(User user);


    /**
     * 修改密码
     *
     * @param user
     * @return
     */
    ResultModel doModifyPassword(User user);


    /**
     * 启用用户
     *
     * @param user
     * @return
     */
    ResultModel doEnableUser(User user);


    /**
     * 通过页码和条件查询
     *
     * @param pageCondition
     * @return
     */
    ResultModel queryUsers(PageCondition pageCondition);

    List<User> queryByName(Page page, String name);

    User queryUserByloginInfo(String phone, String password);

    /**
     * 获取用户总积分
     *
     * @param userId
     * @return
     */
    ResultModel queryUserTotalScore(int userId);

    /**
     * 获取用户昨日积分
     *
     * @param userId
     * @return
     */
    ResultModel queryUserYestoryDayScore(int userId);


    /**
     * 修改用户昵称
     * @param user
     * @return
     */
    ResultModel doModifyUserName(User user);


    /**
     * 用于联动模糊查询
     * @param phoneOrName
     * @param page
     * @return
     */
    ResultModel queryByPartName(String phoneOrName,Page page);


    /**
     * @param
     * @return
     */
    List<User> queryAllUsers();

    /**
     *
     * @param phone
     * @return
     */
    User queryUserByPhone(String phone);

    User queryUserByTag(String userTag);

    /**
     * 登录记录添加
     * @param historyLogin
     * @return
     */
    ResultModel doAddLogin(HistoryLogin historyLogin);

    /**
     * 根据用户id查询最近一次登录记录
     * @param userId
     * @return
     */
    ResultModel queryLastLoginHistoryById(int userId);

    ResultModel queryByEnable(Page page);


    /**
     * 添加短信验证码记录
     * @param userPhoneCode
     * @return
     */
    ResultModel doAddPhoneCode(UserPhoneCode userPhoneCode);

    /**
     * 查询短信验证码
     * @param phone
     * @return
     */
    ResultModel queryPhoneCodeByPhone(String phone);

    /**
     * 修改用户登录时间
     * @param user
     */
    void doUpdateLoginTime(User user);

    /**
     * 根据Id查询user
     * @param userId
     * @return
     */
    User queryById(int userId);


    /**
     * 绑定int账号
     * @param
     * @return
     */
    ResultModel doBindIntAccount(User user);

    /**
     * 解绑int账号
     * @param
     * @return
     */
    ResultModel doUnitedIntAccount(User user);

    /**
     *  用户新增个数
     *  设备激活个数
     *  昨日产生总积分
     */
    ResultModel queryUdsCount();

    void inviteSend(Invite invite, User user);

    ResultModel   queryIntDetailList(PageCondition pageCondition);

    /**
     * 修改用户密码
     */
    ResultModel doEditPass(PasswordVo passwordVo,int userId);

}
